#include	<stdio.h>
#include	<string.h>
#include	<stdlib.h>
#include	<stdbool.h>

#include	<unistd.h>
#include	<assert.h>

#include	<signal.h>

#include	<netinet/in.h>
#include	<arpa/inet.h>
#include	<fcntl.h>

#include	<sys/ioctl.h>
#include	<sys/time.h>
#include	<sys/types.h>
#include	<sys/socket.h>

#include	<event.h>
#include	<evutil.h>

#include	"types.h"

#include	"a_parameters.h"
#include	"performance.h"
#include	"TCPconnections.h"
#include	"acceptor.h"
#include	"learner.h"
#include	"acceptor_0.h"
#include	"coordinator.h"
#include	"UDP.h"
#include	"macros.h"
#include	"util.h"

int N;

struct timeval startTime, endTime, performance_start_time, performance_end_time, tv1, tv2;
struct event *print_stat_timeout_eve, *inst_propose_timeout_eve, *recv_ring_sock_eve, *acceptor_0_recv_msg_eve;

connection acceptor_connections[1];
paxos_data *paxos_instances;
paxos_msg *pm;
inst *new_data, *data;

int PROCESS_ID, self_sid, successor_sid, SUBMIT_PER_WAKE;
int lowestDelivered, gapEnd;
int acceptor_connection_cnt;

bool rtag, COORDINATOR;
//-----------------------OTHERS----------------------------
extern void *messg;
extern proposer_msg *p_msg;
extern int currentFill;
